home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
011-020
/
amok12
/
module
/
janus.def
< prev
next >
Wrap
Text File
|
1993-11-04
|
4KB
|
143 lines
(*---------------------------------------------------------------------------
:Program. Janus.def
:Author. Bernd Preusing
:Address. Gerhardstr. 16 D-2200 Elmshorn
:Phone. 04121/22486
:Shortcut. [bep]
:Version. 1.0
:Date. Mar-88
:Copyright. PD
:Language. Modula-II
:Translator. M2Amiga
:Imports.
:UpDate.
:Contents. Library module for janus.library (Sidecar, PC card)
:Remark. must be converted with ConvLibSym, MinVersion:0 !!
---------------------------------------------------------------------------*)
(* Dies beruht auf keiner Dokumentation, ich habe alles nur durch
Disassemblieren der PC-Karten-Programme herausgefunden.
Das Modul ist keinesfalls vollständig, es gibt noch weit mehr
Konstanten und Strukturen, die ich aber noch nicht alle verstanden
habe. Wenn man genau weiß, was man tut, kann man dies Modul
benutzen, sonst läßt man lieber die Finger davon!
*)
(* $M- janus.library *)
DEFINITION MODULE Janus;
FROM SYSTEM IMPORT
ADDRESS, LONGSET, BYTE;
FROM Exec IMPORT
Interrupt, Library, TaskPtr, InterruptPtr;
TYPE
Offset = CARDINAL;
JMems = (k16,k64,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,t0,t1,u14,u15,u16);
JMemSet = SET OF JMems;
IntNr = [0..31];
BoardInt= RECORD
int : Interrupt;
task : TaskPtr; (* 22 *)
sigMask : LONGSET; (* 26 *)
memory : ADDRESS; (* 30 *) (* reserviertes *)
nrBytes : LONGCARD; (* 34 *)
intNumber: IntNr; (* 38 *)
END;
BoardIntPtr = POINTER TO BoardInt;
JMemList = RECORD
a1,a2: BYTE;
amigaBase : ADDRESS;
pcSegment: CARDINAL;
belegt: CARDINAL; (* diese 2 cards auch in memliste *)
max : CARDINAL; (* .. *)
frei : CARDINAL;
END;
HandShakeMem = RECORD
x1 : CARDINAL;
ctrList : JMemList;
datList : JMemList;
intrs : Offset;
adresses: Offset;
count : CARDINAL;
semas : ARRAY[0..31] OF RECORD x1,x2:BYTE END;
offsets : ARRAY[0..31] OF Offset;
END;
JanusBase = RECORD
libNode : Library;
int1:LONGSET;
int2:LONGSET;
b18000:ADDRESS;
b7e000:ADDRESS;
badr :ADDRESS;
execbase:ADDRESS;
dosbase:ADDRESS;
seglist:ADDRESS;
tableptr:ADDRESS;
inta1,
inta2: Interrupt;
regOff:CARDINAL;
table:ARRAY[0..31] OF InterruptPtr;
END;
CONST
janusName = 'janus.library';
(* memtypes: *)
memData = JMemSet{k64};
memControl = JMemSet{k16};
(* WORD-oders: *)
orderPC = JMemSet{};
orderAmiga = JMemSet{t0};
orderGraph = JMemSet{t1};
(* specify exact memType by memXX+orderYY *)
switchMemType = 20000H; (* zur Adresse addieren, um memType zu wechseln *)
regOffset = 7E000H; (* boardBase+regOffset auf Kartenregister *)
PROCEDURE AllocJMem(byteSize{0}:LONGCARD; memType{1}:JMemSet): ADDRESS;
CODE -60;
PROCEDURE FreeJMem(memoryBlock{9}:ADDRESS; byteSize{0}:LONGCARD);
CODE -66;
PROCEDURE MakeInterrupt(int{0}:IntNr; signal{1}:LONGINT;
byteSize{3}:LONGCARD; memType{2}:JMemSet): BoardIntPtr;
CODE -108;
PROCEDURE ClearInterrupt(int{8}:BoardIntPtr);
CODE -114;
PROCEDURE MemType(addr{0}:ADDRESS):JMemSet;
CODE -78;
PROCEDURE BaseAddr(type{0}:JMemSet):ADDRESS;
CODE -72;
PROCEDURE CalcOffset(addr{0}:ADDRESS):CARDINAL;
CODE -84;
PROCEDURE WaitSemaphore(addr{8}:ADDRESS);
CODE -120;
PROCEDURE ClearSemaphore(addr{8}:ADDRESS);
CODE -126;
PROCEDURE SetIntPtr(int{0}:IntNr; intr{9}:InterruptPtr): InterruptPtr;
CODE -30;
PROCEDURE AllowInt(int{0}:IntNr; allow{1}:BOOLEAN):BOOLEAN;
CODE -36;
PROCEDURE SetPendingInt(int{0}:IntNr; set{1}:BOOLEAN):BOOLEAN;
CODE -42;
PROCEDURE CauseInt(int{0}:IntNr);
CODE -48;
PROCEDURE IntAcknowledged(int{0}:IntNr):BOOLEAN;
CODE -54;
PROCEDURE ReadOffset(int{0}:IntNr):CARDINAL;
CODE -90;
PROCEDURE WriteOffset(int{0}:IntNr; offset{1}:CARDINAL):CARDINAL;
CODE -96;
PROCEDURE BoardAddress():ADDRESS;
CODE -102;
PROCEDURE MoveBytes(bytes{0}:LONGCARD; from{8},to{9}:ADDRESS);
CODE -132;
END Janus.Def